#install.packages("biogeo")
#install.packages("corrplot")
#install.packages("dendextend")
#install.packages("docxtractr")
#install.packages("dplyr")
#install.packages("factoextra")
#install.packages("Formula")
#install.packages("ggfortify")
#install.packages("ggplot2", dependencies = TRUE)
#install.packages("ggpubr")
#install.packages("Hmisc")
#install.packages("lattice")
#install.packages("readxl")
#install.packages("sf")
#install.packages("sp")
#install.packages("survival")
#install.packages("tidyr")
#install.packages("tidyverse")

library(biogeo)
library(corrplot)
library(dendextend)
library(docxtractr)
library(factoextra)
library(Formula)
library(ggfortify)
library(ggplot2)
library(ggpubr)
library(Hmisc)
library(dplyr) # must be after Hmisc and raster to use "select" from it
library(lattice)
library(readxl)
library(sf)
library(sp)
library(survival)
library(tidyr)
library(tidyverse)

Introduction

Under abiotic stress such as salinity, several morphological and physiological parameters of plants are affected. As function of their phenotypic diversity, plants from the same species can exhibit different tolerance to abiotic stress. In the study we will review, 25 accessions of Eruca sativa from different regions of Pakistan were analyzed. Each accession have been separated into two groups according to the received treatment: first group underwent salt stress (150 mM NaCl) during two weeks and the second was the control. Lastly, 19 morpho-physiological traits were measured.

The data was obtained from the paper “Evaluation of salt tolerance in Eruca sativa accessions based on morpho-physiological traits” (Afsar et. al 2020)

Objectives and hypotheses

Our main objectives are:

  1. Explore effects of salt stress on various morpho-physiological traits in different E. sativa accessions.
  2. Identify traits that salt stress has the biggest influence on.
  3. Define tolerant and sensitive accessions.
  4. Compare our results with the ones from the paper.
  5. Explore if location can be linked to salt-tolerance.

Main hypotheses:

  1. We expect to observe statistically significant differences in morpho-physiological traits between control and salt-treated plants.
  2. Salt-tolerant and salt-susceptible accessions will belong to different groups based on how much salt stress affects morpho-physiological parameters.
  3. Geographical location and/or elevation may impact adaptation to salinity.

Methods

1. Downloading and tidying the data.

First we had to download the data.xls file from the paper. The tables needed to be tidied (column names organized, empty cells filled, values formatted, etc.). Then we had to download the location of accessions.doc data and tidy this table as well.

In order to be able to work with all of morpho-physiological parameters, we had to unify them (because of different number of replicates in different categories of morpho-physiological traits measurements). The unification was done through the mean in every accession and treatment. With unified data we created a summary table (Table 1.1).

2. Test of normality and statistical difference of variables.

Once we had the summary table, we tested the normality of variables with Shapiro–Wilk test. Our Null Hypothesis (H0) was that morpho-physiological parameters’ distribution was normal. The results for every group of morpho-physiological traits were summarized in tables (Table 2.1-2.5).

If the H0 was accepted (p > 0.05) we used ANOVA, otherwise (p < 0.05) we proceeded with Kruskal-Wallis test to see if there was a significant difference between salt-treated and control plants for each variable. The parameters’ distributions and results of normality tests were visualized in the boxplot figures (Figure 2.1-2.19)

Additionally, we calculated mean and standard deviation values of treated and control plants and summarized them into tables (Table 2.6-2.7).

3. Correlation analysis.

In order to see the degree of association between the morpho-physiological parameters (and additionally elevation), we performed Pearson correlation analysis. The results were visualized in the Figure 3.1.

We started doing Pearson correlation using Membership Function Values (MFV) of the 11 selected morpho-physiological traits, following the article logic. The results were very similar to the ones in the article, but we discarded them as we didn’t understand their utility. Instead we computed Pearson correlation on the means of all morpho-physiological traits (treatment and control). Consecutively, we were able to see (prior to calculating MFV) which values had positive correlation and which had the negative. That allowed us to choose the appropriate formula for MFV calculation (explanation of MFV calculation is in the next sections).

4. Salt Tolerance Index (STI)

To evaluate degree of salt tolerance (so that later we can define the tolerant and sensitive accessions), we needed to convert all morpho-physiological parameters (control and treatment) for each accession to the Salt-tolerance Index (STI). STI is the ratio of the values of every morpho-physiological parameters of treated plants to control:

\(STI=Vtreatment/Vcontrol\)

At this point we deviated from the paper in the method of STI calculation. We considered that the way the authors calculated STI on accessions was not appropriate, because we think that they arbitrary paired plants from treatment and control. Instead, we calculated STI ratio on the means of treated plants and control for every parameter. STI results are summarized in the Table 4.1.

5. Membership function value (MFV)

Membership Function Value allows to make the different variables comparable between each other, so they can be used together in order to make a ranking. We calculated the MVF values using the formula provided in the article:

\(Xp=[(X−Xmin)/(Xmax−Xmin)]×100%\)

For the traits inversely related to salt tolerance (Electrolyte leakage, Na, K, Ca) we used the second formula:

\(Xp=[1−(X−Xmin)/(Xmax−Xmin)]×100%\)

To define which morpho-physiological parameters were inversely related, we used the results of the correlation analysis. MFV calculation results are summarized in the Table 5.1.

6. The Principal Component Analysis (PCA)

The Principal Component Analysis (PCA) allows to reduce the dimensionality of a multivariate data to two (or more) principal components, that can be visualized graphically. We performed PCA using MFV values of selected variables. RWC and ICO2 were excluded because they did not show significant difference between treatment and control (according to Kruskal-Wallis and ANOVA tests). Mg, and Ca were excluded because they showed little correlation with the rest of the parameters (according to the Pearson correlation analysis). K and Na also showed somewhat lesser extent of correlation, but the main reason for their exclusion was the availability of K/Na ratio, that, basically, unified the two. Thus we included the following traits into the PCA: SL, RL, PH, LN, LA, FW, DW, EL, CC, K_Na, PR, TR, SC.

The results were plotted. First plot represented contribution of principal components to the variance of the data (Figure 8.1). Second plot is the scatter plot individuals (our data) allowed us to visualize the groupings among accessions (Figure 8.2). It must be mentioned that initial analysis did not contain these groupings, they were added after cluster analysis results for additional visualization and do not interfere with data projections in any way. The third plot is the loadings correlation circle (Figure 8.3). It gives an idea about how the variables contribute to data projection on the principal components. The last plot was used to conclude the choice of main variables, that contributes to salt tolerance (Figure 8.4). Red dashed line is the mean contribution percentage of all the variables in the first principal component. It was our cessation level for the choice of the main variables for MFV ranking and cluster analysis.

7. Salt-tolerance evaluation: ranking and dendrogram

To evaluate salt tolerance, we needed to group accessions that behave similarly under salt stress. This was achieved, based on the MFV mean of the 6 highest ranked physio-morphological parameters from PCA analysis (PH, SL, LN, RL, DW, FW).

The dendrogram was established based on MFV of 6 highest values from PCA analysis. Three groups were formed. The cutting level was established above 50% of the maximal distance.

The ranking was done by ordering MFV mean values from the highest to the smallest. Then the groups were addressed according to the PCA visualization and dendrogram clustering, both methods allowed us to identify 3 groups ranked from tolerant, moderately tolerant to susceptible.

8. Accessions map and location correlation

To visually evaluate possible link between accession salt tolerance and their location we created a map, where each accession was presented and colored according to the salt tolerance ranking. To make data more readable overlapping accessions were removed with a code.

Additionally, we wanted to check if the salt tolerance was correlated to elevation. So we made a Pearson correlation analysis between MFV mean (6 highest) and elevation. The results were presented in the Table 8.1

Results

1. Data download and transformation

###----Data download and transformation----###

##Downloading the .xlsx data
#download excel sheet from internet and store it into an Excel object
Excel <- "https://dfzljdn9uc3pi.cloudfront.net/2020/9749/1/Raw_data_Afsar_et_al.%2C_2020-PeerJ_20.5.2020.xlsx"

#create the folder "data" if it doesn't exist
D <- "data"
if (!dir.exists(D)) dir.create(D)
f <- paste0 (D, "/data.xlsx")

#download excel into the folder "data" (created beforehand) under the name "data.xlsx"
download.file(Excel, f, mode="wb")

#get the names of the excel sheets
excel.sheet <- excel_sheets(f)

##Tidying the .xlsx data
#create a list with the 4 sheet table from excel to tidy it further
X <- list()
for (i in excel.sheet){
  X[[i]] <- as.data.frame(read_xlsx(f,i))
}

#organize column names and fill the first 2 columns
for(i in names(X)){
  names(X[[i]])[1:3] <- c("Number", "Code", "Treat_Contr")
  X[[i]] <- X[[i]][-1,]
  X[[i]] <- fill(X[[i]], 1:2)
}

#transforming columns' data format 
for (i in seq_along(X)){
  X[[i]][2:3] <- lapply(X[[i]][2:3], as.factor)
  X[[i]][-(2:3)] <- lapply(X[[i]][-(2:3)], as.numeric)
}

#creating data frames from different .xlsx sheets
Morpho_t <- X$`Morphological traits`
Weight_ion <- X$`FW DW RWC Ions EL`
Chloro_c <- X$`Chlorophyll content`
Gas_e <- X$`Gas Exchange parameters`

#changing names of the columns for more convenient use
names(Morpho_t)[4:8] <- c('Shoot_Length', 
                          'Root_Length', 
                          'Plant_Height', 
                          'Leaf_Number', 
                          'Leaf_Area')
names(Chloro_c)[4] <- c('Chlorophyll_Content')
names(Weight_ion) [4:12] <- c('Fresh_Weight', 
                              'Dry_Weight', 
                              'Relative_water_content',
                              'Na',
                              'K', 
                              'Ca', 
                              'Mg', 
                              'K_Na', 
                              'Electrolyte_Leakage')
names(Gas_e) [4:7] <- c('Photsynthesis_Rate', 
                        'Intercellular_CO2', 
                        'Transpiration_Rate', 
                        'Stomatal_Conductance')

#adding NA cells into the missing 7th and 16th accession
#creating a data frame with the missing data first
Gas_e_miss <- data.frame (Number = rep(c(7, 16), each = 8),
                          Code = rep(c("Es-7", "Es-16"), each = 8),
                          Treat_Contr = rep(c("Treatment", "Control",
                                            "Treatment", "Control"), each = 4),
                          Photsynthesis_Rate = rep(NA, 16),
                          Intercellular_CO2 = rep(NA, 16),
                          Transpiration_Rate = rep(NA, 16),
                          Stomatal_Conductance = rep(NA, 16))

#changing the numbers in "Number" column
Gas_e$Number <- replace(Gas_e$Number, , rep(c(1:6, 8:15, 17:25), each = 8))

#adding NA cells into the missing 7th and 16th accession
if (!(is.element('Es-7', Gas_e$Code))) Gas_e <- rbind(Gas_e, Gas_e_miss)

#sorting the variables according to Number
Gas_e <- Gas_e[order(Gas_e$Number),]

#rewriting row names to correspond to the ordered data
row.names(Gas_e) <- c(1:200)

##Downloading the .docx data
#downloading data for the location of accessions
word <- "https://dfzljdn9uc3pi.cloudfront.net/2020/9749/1/Table_S1.docx"
w <- paste0(D, "/location.docx")
download.file(word, w, mode="wb")

##Tidying the .docx data
#creating data frame for the location of accessions
Acc_loc <- docx_extract_all_tbls(read_docx(w, track_changes = NULL),
                                 guess_header = TRUE, preserve = FALSE,
                                 trim = TRUE)
Acc_loc <- as.data.frame(Acc_loc)

#removing m from Elevation column 
Acc_loc$Elevation <- sub(' m', '', Acc_loc$Elevation)

#transforming data in the accession_loc
Acc_loc[c(1,6)] <- lapply(Acc_loc[c(1,6)], as.numeric)
Acc_loc[-c(1,6)] <- lapply(Acc_loc[-c(1,6)], as.factor)

#In order to fit the length of this table to the length of the ultimate table
#we need to double all the rows
Acc_loc_double <- Acc_loc[rep(1:25, each = 2), ]

## Creating the summarized table to work with
#create summary table for morphological trait
a <- Morpho_t %>% 
  group_by(Number, Code, Treat_Contr) %>% 
  summarise(Shoot_Length = mean(Shoot_Length),
            Root_Length = mean(Root_Length), 
            Plant_Height = mean(Plant_Height), 
            Leaf_Number = mean(Leaf_Number), 
            Leaf_Area = mean(Leaf_Area))

# remove NA values from Weight_ion table
Weight_ion <- na.omit(Weight_ion)
#Create summary table for Weight ion
b <- Weight_ion %>% 
  group_by(Number, Code, Treat_Contr) %>% 
  summarise(Fresh_Weight= mean(Fresh_Weight),
            Dry_Weight= mean(Dry_Weight),
            Relative_water_content = mean(Relative_water_content),
            Na =mean(Na),
            K =mean(K),
            Ca =mean(Ca),
            Mg= mean(Mg),
            K_Na =mean(K_Na),
            Electrolyte_Leakage= mean(Electrolyte_Leakage))
#take only the columns number 4 to 12 to avoid repetition of number, code and treatment
b <- b[4:12] 

#Create summary table for Weight_ion
c <- Chloro_c %>% 
  group_by(Number, Code, Treat_Contr) %>% 
  summarise(Chlorophyll_Content = mean(Chlorophyll_Content))
#take only the column number 4 to avoid repetition of number, code and treatment
c <- c[4]  

#Create summary table for Gas_e
d <- Gas_e %>% 
  group_by(Number, Code, Treat_Contr) %>% 
  summarise(Photsynthesis_Rate= mean(Photsynthesis_Rate),
            Intercellular_CO2= mean(Intercellular_CO2), 
            Transpiration_Rate= mean(Transpiration_Rate), 
            Stomatal_Conductance=mean(Stomatal_Conductance))
#take only the columns number 4 to 7 to avoid repetition of number, code and treatment
d <- d[4:7]

#add Acc_loc data to the table
e <- Acc_loc_double
e <- e[6]

#create data frame with all the summarized tables 
table <- data.frame(a, b, c, d, e)

##Creating the caption for the summary table
knitr::kable(table, caption = "Table 1.1 Mean values of salt tolerance traits for each accession and treatment type", align="c" , digits = round(2))
Table 1.1 Mean values of salt tolerance traits for each accession and treatment type
Number Code Treat_Contr Shoot_Length Root_Length Plant_Height Leaf_Number Leaf_Area Fresh_Weight Dry_Weight Relative_water_content Na K Ca Mg K_Na Electrolyte_Leakage Chlorophyll_Content Photsynthesis_Rate Intercellular_CO2 Transpiration_Rate Stomatal_Conductance Elevation
1 1 Es-1 Control 1.89 2.40 4.16 4.20 0.05 343.10 20.93 75.84 4.60 8.72 4.02 2.74 1.90 51.07 16.88 12.41 286.0 3.16 0.22 14
1.1 1 Es-1 Treatment 1.69 1.54 3.08 2.60 0.03 171.97 18.06 89.81 21.50 11.55 3.51 2.54 0.54 48.42 13.65 4.62 245.5 1.64 0.08 14
2 2 Es-2 Control 2.83 1.93 4.99 4.40 0.08 173.13 11.97 71.60 6.04 8.81 4.28 3.49 1.46 61.86 21.17 2.74 271.5 0.90 0.04 17
2.1 2 Es-2 Treatment 1.54 1.27 2.53 2.80 0.04 58.84 9.00 91.74 23.86 12.99 3.74 2.83 0.55 62.49 15.20 1.78 288.5 1.12 0.04 17
3 3 Es-3 Control 3.51 2.35 4.62 4.40 0.16 321.27 15.93 76.90 7.44 9.59 5.69 3.79 1.31 64.60 18.67 17.00 290.5 4.18 0.31 579
3.1 3 Es-3 Treatment 0.69 0.45 1.19 1.33 0.01 32.76 3.93 89.22 17.00 14.46 5.74 3.55 0.85 78.67 13.20 1.34 258.0 0.56 0.02 579
4 4 Es-4 Control 3.56 2.75 6.05 4.60 0.10 347.55 19.72 96.03 7.08 6.94 2.69 5.11 0.98 60.97 16.90 13.00 279.0 3.55 0.21 537
4.1 4 Es-4 Treatment 2.07 1.98 3.83 3.80 0.04 165.95 12.45 96.34 22.16 9.74 2.92 3.88 0.44 65.64 15.88 3.40 273.0 1.38 0.06 537
5 5 Es-5 Control 2.48 1.65 4.51 4.40 0.07 222.80 12.93 91.39 9.97 12.06 5.29 7.24 1.21 49.65 23.72 9.11 280.0 3.45 0.20 523
5.1 5 Es-5 Treatment 1.08 0.97 2.09 2.00 0.06 170.20 10.83 94.64 27.53 13.02 4.01 4.89 0.47 65.76 16.82 2.62 312.5 1.94 0.05 523
6 6 Es-6 Control 2.01 1.48 3.55 4.60 0.08 753.50 32.50 98.75 10.69 12.13 3.12 5.12 1.14 59.58 17.08 4.96 281.5 3.88 0.20 186
6.1 6 Es-6 Treatment 1.23 1.04 2.18 3.80 0.03 235.50 10.32 95.90 25.12 14.73 2.99 3.84 0.59 58.45 12.58 1.22 315.0 1.03 0.03 186
7 7 Es-7 Control 1.95 2.19 4.08 4.00 0.08 323.13 10.60 97.49 13.15 16.65 3.98 3.69 1.27 46.84 26.30 NA NA NA NA 159
7.1 7 Es-7 Treatment 1.49 1.15 2.69 2.40 0.06 96.48 8.52 96.00 30.73 16.97 3.04 2.71 0.55 50.04 31.32 NA NA NA NA 159
8 8 Es-8 Control 2.97 1.80 4.66 5.00 0.07 245.13 11.20 94.58 15.59 17.60 7.78 9.49 1.13 69.75 9.80 2.86 300.5 1.57 0.07 97
8.1 8 Es-8 Treatment 0.92 1.05 1.98 2.40 0.04 76.17 5.59 92.02 31.90 21.97 6.39 8.85 0.69 83.50 6.93 1.54 333.0 1.30 0.05 97
9 9 Es-9 Control 2.42 2.23 4.65 4.00 0.07 60.59 3.48 91.56 16.21 33.40 8.99 8.11 2.07 50.83 27.40 14.01 255.0 3.46 0.23 355
9.1 9 Es-9 Treatment 1.71 1.39 3.10 3.00 0.04 50.85 2.72 90.26 31.85 41.31 13.46 5.33 1.30 56.62 31.32 2.46 251.0 0.68 0.03 355
10 10 Es-10 Control 1.38 1.61 3.04 5.00 0.08 435.07 16.00 96.41 9.82 12.51 4.69 3.44 1.30 55.62 18.52 8.80 281.5 3.48 0.17 840
10.1 10 Es-10 Treatment 1.06 0.75 1.89 2.20 0.07 177.52 7.18 94.73 35.98 16.71 8.52 2.91 0.46 56.00 13.00 2.51 258.5 1.23 0.06 840
11 11 Es-11 Control 2.06 1.89 3.99 4.40 0.06 205.72 7.28 94.66 15.82 18.40 9.79 4.41 1.17 54.23 14.32 3.29 290.0 1.65 0.07 355
11.1 11 Es-11 Treatment 1.27 1.13 2.33 3.60 0.05 144.61 6.43 95.90 18.54 20.71 11.00 4.25 1.12 54.21 9.35 1.16 329.0 0.63 0.03 355
12 12 Es-12 Control 1.78 1.66 3.44 4.40 0.06 247.10 10.80 94.75 16.64 14.60 4.02 6.07 0.88 57.91 15.67 9.07 255.5 3.14 0.15 178
12.1 12 Es-12 Treatment 1.37 1.22 2.36 3.00 0.02 193.27 9.27 95.20 20.31 11.98 7.14 5.51 0.59 59.02 14.37 3.31 281.5 1.84 0.06 178
13 13 Es-13 Control 2.73 2.50 5.34 5.00 0.07 449.30 10.90 96.10 10.56 15.25 5.45 4.46 1.44 47.15 15.00 14.80 294.0 3.64 0.20 140
13.1 13 Es-13 Treatment 1.97 1.44 3.41 4.00 0.04 176.71 9.17 94.59 27.91 15.77 8.00 3.15 0.57 47.84 9.08 2.50 223.5 0.68 0.03 140
14 14 Es-14 Control 2.29 2.41 4.79 5.60 0.08 426.00 14.00 97.35 12.85 13.03 4.43 4.19 1.02 49.72 24.88 8.83 294.5 2.58 0.20 190
14.1 14 Es-14 Treatment 1.23 1.49 2.80 3.20 0.03 165.56 8.61 94.23 35.57 18.91 10.12 3.73 0.53 55.17 17.52 3.18 274.5 1.25 0.05 190
15 15 Es-15 Control 2.07 2.42 4.38 4.75 0.05 250.90 11.80 95.26 15.84 12.65 4.25 4.53 0.80 59.46 16.55 5.16 315.5 1.93 0.10 169
15.1 15 Es-15 Treatment 0.35 0.97 1.64 1.60 0.01 36.60 3.60 91.67 21.56 16.92 5.76 3.12 0.78 62.24 9.63 1.37 215.5 0.26 0.01 169
16 16 Es-16 Control 2.42 2.31 4.65 4.60 0.07 77.00 3.67 90.82 10.68 13.63 5.49 3.87 1.30 49.17 21.22 NA NA NA NA 268
16.1 16 Es-16 Treatment 0.69 0.45 1.23 1.33 0.01 33.03 3.01 88.90 22.88 19.37 12.14 2.83 0.84 52.06 12.67 NA NA NA NA 268
17 17 Es-17 Control 2.44 2.23 4.69 5.00 0.08 210.20 10.40 94.25 17.88 17.13 7.26 6.26 0.96 60.17 15.18 1.14 340.0 1.06 0.05 207
17.1 17 Es-17 Treatment 0.60 0.45 1.23 1.40 0.02 36.28 3.00 90.90 47.06 26.70 22.98 4.59 0.58 63.78 9.22 0.76 315.0 0.37 0.03 207
18 18 Es-18 Control 3.05 2.90 5.87 5.20 0.07 307.93 8.67 96.56 24.72 22.81 4.89 5.05 0.93 62.19 9.62 2.84 306.0 1.40 0.07 162
18.1 18 Es-18 Treatment 0.60 0.46 1.16 2.00 0.01 41.04 2.80 88.61 38.07 25.59 13.62 3.84 0.68 68.11 12.50 1.43 349.5 1.00 0.03 162
19 19 Es-19 Control 2.25 2.18 4.43 3.40 0.04 104.92 5.34 92.96 12.51 18.37 2.61 5.99 1.47 57.77 18.75 2.16 287.0 3.64 0.20 186
19.1 19 Es-19 Treatment 1.23 1.49 2.80 3.20 0.03 70.57 4.08 94.69 32.73 22.20 6.84 3.78 0.68 59.43 16.52 1.62 293.0 0.56 0.04 186
20 20 Es-20 Control 1.99 2.34 4.33 3.00 0.04 42.25 3.10 88.38 13.68 26.53 13.48 6.81 1.94 62.26 22.22 12.70 238.0 3.00 0.16 186
20.1 20 Es-20 Treatment 0.35 0.97 2.80 1.60 0.01 30.15 2.60 91.38 48.28 33.45 21.62 4.74 0.72 65.09 14.67 1.75 215.5 0.46 0.02 186
21 21 Es-21 Control 2.03 2.68 4.72 3.20 0.04 90.56 4.18 94.99 24.90 24.81 8.28 10.54 1.00 46.49 9.95 12.18 274.0 4.14 0.25 171
21.1 21 Es-21 Treatment 0.60 0.46 1.78 2.00 0.02 61.55 3.25 95.42 44.92 30.38 12.05 5.82 0.68 48.78 16.90 2.58 265.5 1.23 0.06 171
22 22 Es-22 Control 1.99 2.47 4.33 3.40 0.04 48.30 2.02 96.41 16.72 12.71 9.38 5.53 0.76 59.96 18.98 4.26 259.0 1.32 0.06 170
22.1 22 Es-22 Treatment 1.22 0.78 2.13 2.00 0.04 35.92 1.32 95.93 28.21 15.63 13.33 4.66 0.56 71.26 8.02 1.24 275.0 0.82 0.03 170
23 23 Es-23 Control 1.73 1.80 3.53 3.00 0.05 138.11 4.17 94.44 17.41 10.94 8.64 3.17 0.63 63.71 21.50 5.04 246.0 1.56 0.06 210
23.1 23 Es-23 Treatment 0.63 0.53 1.17 2.00 0.03 37.66 3.38 90.88 26.89 16.58 9.95 2.30 0.62 66.40 8.83 0.78 264.0 0.66 0.03 210
24 24 Es-24 Control 1.40 1.41 2.84 3.00 0.04 107.80 7.67 90.98 13.83 13.91 6.39 14.25 1.01 61.26 14.22 4.47 276.5 1.52 0.06 209
24.1 24 Es-24 Treatment 0.75 0.49 1.26 1.60 0.03 66.41 3.15 89.62 28.33 19.10 7.40 5.60 0.68 67.51 9.42 0.90 361.0 0.61 0.03 209
25 25 Es-25 Control 2.39 2.74 5.18 3.00 0.04 95.34 5.29 93.99 15.45 13.94 5.81 11.36 0.91 50.58 19.83 2.27 266.0 0.99 0.06 151
25.1 25 Es-25 Treatment 1.17 0.64 1.84 2.00 0.04 39.93 4.31 90.57 41.97 26.23 11.76 9.95 0.62 48.61 12.95 0.71 350.5 0.38 0.03 151

2. Initial statistical analysis. Normality test and significant difference test

2.1 Morphological traits

There is a statistical difference between control and treatment for all morphological traits

  • Shoot length (SL): Shoot length is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for SL in salt-stressed plants is 1.10 ± 0.48 and 2.30 ± 0.56 for control plants. SL stress index of accessions varied from 16.73 to 89.12

  • Root length (RL): Root length is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for RL in salt-stressed plants is 0.98 ± 0.43 and 2.17 ± 0.42 for control plants. RL stress index of accessions varied from 15.91 to 73.53

  • Plant height (PH): Plant height is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for PH in salt-stressed plants is 2.18 ± 0.76 and 4.43 ± 0.77 for control plants. PH stress index of accessions varied from 19.83 to 74.07

  • Leaf number (LN): Number of leaves is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for LN in salt-stressed plants is 2.43 ± 0.82 and 4.22 ± 0.78 for control plants. LN stress index of accessions varied from 28.00 to 94.12

  • Leaf area (LA): Leaf area is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for LA in salt-stressed plants is 0.03 ± 0.02 and 0.07 ± 0.03 for control plants. LA stress index of accessions varied from 75.95 to 100

#Performing Shapiro–Wilk test of normality
spm <- numeric()
nor_spm <- c()
for(i in names(Morpho_t[4:8])) { 
  an1 <- aov(Morpho_t[, i] ~ Morpho_t$Treat_Contr)
  spm[i] <- shapiro.test(an1$residuals)$p.value
  nor_spm <- c(nor_spm, ifelse (spm[i] <= 0.05, "False", "True"))
}
#Creating summary table with the results
spm_table <- data.frame ("P-value" = spm, "Normality" = nor_spm)

#Creating the caption for the summary table
knitr::kable(spm_table, caption = "Table 2.1 Shapiro–Wilk test results for morphological traits", align="c", digits = 32)
Table 2.1 Shapiro–Wilk test results for morphological traits
P.value Normality
Shoot_Length 3.066316e-05 False
Root_Length 1.876227e-02 False
Plant_Height 3.159185e-02 False
Leaf_Number 1.130901e-08 False
Leaf_Area 4.626855e-11 False
#Performing significance test and plotting the results and values distribution
for (i in (4:8)) {
  bmorpho <- ggboxplot(Morpho_t,
                       x = "Treat_Contr",
                       y = names(Morpho_t[i]),
                       color = names(Morpho_t[3]),
                       palette = c("blue", "red"),
                       add = "jitter") +
    stat_compare_means(data = Morpho_t, method = "kruskal.test",
                       label.x.npc = "center",
                       label.y.npc = "top") +
    theme(legend.position = "None") +
     labs(x = "", title = paste("Boxplot of the", names(Morpho_t[i])),
         caption = paste("Figure 2.", (i-3), " Distribution of the mean values of the ", names(Morpho_t[i]), sep = ""))
  print(bmorpho)
}

2.2 Biomass traits

  • Fresh weight (FW): Fresh weight is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for FW in salt-stressed plants 96.22 ± 66.00 and 241.06 ± 164.75 for control plants. FW stress index of accessions varied from 10.20 to 83.93

  • Dry weight (DW): Dry weight is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for DW in salt-stressed plants is 6.26 ± 4.00 and 10.58 ± 6.89 for control plants. DW stress index of accessions varied from 24.67 to 88.26

#Performing Shapiro–Wilk test of normality
spb <- numeric()
nor_spb <- c()
for(i in names(Weight_ion[4:5])) { 
  an2 <- aov(Weight_ion[, i] ~ Weight_ion$Treat_Contr)
  spb[i] <- shapiro.test(an2$residuals)$p.value
  nor_spb <- c(nor_spb, ifelse (spb[i] <= 0.05, "False", "True"))
}

#Creating summary table with the results
spb_table <- data.frame ("P-value" = spb, "Normality" = nor_spb)

#Creating the caption for the summary table
knitr::kable(spb_table, caption = "Table 2.2 Shapiro–Wilk test results for biomass traits", align="c", digits = 32)
Table 2.2 Shapiro–Wilk test results for biomass traits
P.value Normality
Fresh_Weight 2.579258e-07 False
Dry_Weight 7.183545e-07 False
#Performing significance test and plotting the results and values distribution
for (i in (4:5)) {
  bwei <- ggboxplot(Weight_ion, 
                 x = "Treat_Contr",
                 y = names(Weight_ion[i]), 
                 color = names(Weight_ion[3]),
                 palette = c("blue", "red"),
                 add = "jitter") + 
    stat_compare_means(data = Weight_ion, method = "kruskal.test",
                       label.x.npc = "center",
                       label.y.npc = "top") +
    theme(legend.position = "None") +
    labs(x = "", title = paste("Boxplot of the", names(Weight_ion[i])),
         caption = paste("Figure 2.", (i+2), " Distribution of the mean values of the ", names(Weight_ion[i]), sep = ""))
  print(bwei)
} 

2.3 Relative water content (RWC), electrolyte leakage (EL) and chlorophyll content (CC)

  • Relative water content (RWC): Relative water content is not significantly different in the salt-stressed plants compared with the control (p > 0.05). The mean value for RWC in salt-stressed plants 92.77 X ± 2.65 and 92.10 ± 7.00 for control plants.

  • Electrolyte leakage (EL): Electrolyte leakage is significantly increased in the salt-stressed plants compared with the control (p < 0.05). The mean value for EL in salt-stressed plants is 60.60 ± 9.32 and 56.51 ± 6.48 for control plants.

  • Chlorophyll content (CC): Chlorophyll content is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for CC in salt-stressed plants is 14.06 ± 6.02 and 18.17 ± 4.79 for control plants.

#Performing Shapiro–Wilk test of normality on the RWC and EL
spe <- numeric()
nor_spe <- c()
for(i in names(Weight_ion[c(6,12)])) { 
  an3 <- aov(Weight_ion[, i] ~ Weight_ion$Treat_Contr)
  spe[i] <- shapiro.test(an3$residuals)$p.value
  nor_spe <- c(nor_spe, ifelse (spe[i] <= 0.05, "False", "True"))
}

#Creating summary table with the results for RWC and EL
spe_table <- data.frame ("P-value" = spe, "Normality" = nor_spe)

#Performing Shapiro–Wilk test of normality on the CC
nor_spc <- c()
an4 <- aov(Chloro_c$Chlorophyll_Content ~ Chloro_c$Treat_Contr)
spc <- shapiro.test(an4$residuals)$p.value

#Creating summary table with the results for CC
nor_spc <- c(nor_spc, ifelse (spc <= 0.05, "False", "True"))
spc_table <- data.frame ("P-value" = spc, "Normality" = nor_spc)
row.names(spc_table) <- "Chlorophyll_Content"

#Uniting the summary tables with the results for RWC+EL and CC
spec_table <- dplyr::bind_rows(spe_table, spc_table)

#Creating the caption for the summary table
knitr::kable(spec_table, caption = "Table 2.3 Shapiro–Wilk test results for RWC, EL and CC", align="c", digits = 32)
Table 2.3 Shapiro–Wilk test results for RWC, EL and CC
P.value Normality
Relative_water_content 4.474584e-14 False
Electrolyte_Leakage 9.774001e-04 False
Chlorophyll_Content 3.165934e-13 False
#for RWC and EL
for (i in (c(6,12))) {
  bwei2 <- ggboxplot(Weight_ion, 
                 x = "Treat_Contr",
                 y = names(Weight_ion[i]), 
                 color = names(Weight_ion[3]),
                 palette = c("blue", "red"),
                 add = "jitter") + 
    stat_compare_means(data = Weight_ion, method = "kruskal.test",
                       label.x.npc = "center",
                       label.y.npc = "top") +
    theme(legend.position = "None") +
     labs(x = "", title = paste("Boxplot of the", names(Weight_ion[i])),
          caption = paste("Figure 2.", ifelse((i<7), paste(i+2), paste(i-3)), " Distribution of the mean values of the ", names(Weight_ion[i]), sep = ""))
  print(bwei2)
} 

#for CC
bchlo <- ggboxplot(Chloro_c, 
                 x = "Treat_Contr",
                 y = "Chlorophyll_Content", 
                 color = names(Chloro_c[3]),
                 palette = c("blue", "red"),
                 add = "jitter") 
bchlo + stat_compare_means(data = Chloro_c, method = "kruskal.test", 
                           label.x.npc = "center",
                           label.y.npc = "top") +
  theme(legend.position = "None") +
   labs(x = "", title = paste("Boxplot of the", names(Chloro_c[4])),
         caption = paste("Figure 2.10 Distribution of the mean values of the", names(Chloro_c[4])))

2.4 Mineral ion content

  • Sodium (Na): Sodium is significantly increased in the salt-stressed plants compared with the control (p < 0.05). The mean value for Na in salt-stressed plants is 30.03 ± 8.84 and 13.60 ± 5.00 for control plants.

  • Potassium (K): Potassium is significantly increased in the salt-stressed plants compared with the control (p < 0.05). The mean value for K in salt-stressed plants is 19.72 ± 7.48 and 15.48 ± 6.09 for control plants.

  • Calcium (Ca): Calcium is significantly increased in the salt-stressed plants compared with the control (p < 0.05). The mean value for Ca in salt-stressed plants is 9.12 ± 5.32 and 6.03 ± 2.60 for control plants.

  • Magnesium (Mg): Magnesium is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for Mg in salt-stressed plants is 4.37 ± 1.83 and 5.95 ± 2.85 for control plants.

  • K/Na ratio: K/Na ratio is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for K/Na ratio in salt-stressed plants is 0.67 ± 0.20 and 1.20 ± 0.36 for control plants.

#Performing Shapiro–Wilk test of normality
spw <- numeric()
nor_spw <- c()
for(i in names(Weight_ion[7:11])) { 
  an5 <- aov(Weight_ion[, i] ~ Weight_ion$Treat_Contr)
  spw[i] <- shapiro.test(an5$residuals)$p.value
  nor_spw <- c(nor_spw, ifelse (spw[i] <= 0.05, "False", "True"))
}

#Creating summary table with the results
spw_table <- data.frame ("P-value" = spw, "Normality" = nor_spw)

#Creating the caption for the summary table
knitr::kable(spw_table, caption = "Table 2.4 Shapiro–Wilk test results for mineral ion content ", align="c", digits = 32)
Table 2.4 Shapiro–Wilk test results for mineral ion content
P.value Normality
Na 2.216429e-04 False
K 1.662822e-08 False
Ca 7.117288e-07 False
Mg 1.138009e-09 False
K_Na 2.015698e-07 False
#Performing significance test and plotting the results and values distribution
for (i in (7:11)) {
  bwei3 <- ggboxplot(Weight_ion, 
                 x = "Treat_Contr",
                 y = names(Weight_ion[i]), 
                 color = names(Weight_ion[3]),
                 palette = c("blue", "red"),
                 add = "jitter") + 
    stat_compare_means(data = Weight_ion, method = "kruskal.test",
                       label.x.npc = "center",
                       label.y.npc = "top") +
    theme(legend.position = "None") +
    labs(x = "", title = paste("Boxplot of the", names(Weight_ion[i])),
         caption = paste("Figure 2.", (i+4), " Distribution of the mean values of the ", names(Weight_ion[i]), sep = ""))
  print(bwei3)
}

2.5 Gas exchange attributes

  • Photosynthesis rate (PR): Photosynthesis rate is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for PR in salt-stressed plants is 1.95 ± 1.02 and 7.53 ± 4.84 for control plants.

  • Intercellular CO2 (ICO2): Intercellular CO2 is not significantly different in the salt-stressed plants compared with the control (p < 0.05). The mean value for ICO2 in salt-stressed plants is 284.70 ± 42.57 and 281.20 ± 22.90 for control plants.

  • Transpiration rate (TR): Transpiration rate is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for TR in salt-stressed plants is 0.94 ± 0.48 and 2.57 ± 1.13 for control plants.

  • Stomatal conductance (SC): Stomatal conductance is significantly reduced in the salt-stressed plants compared with the control (p < 0.05). The mean value for SC in salt-stressed plants is 0.039 ± 0.02 and 0.15 ± 0.08 for control plants.

#Performing Shapiro–Wilk test of normality
spg <- numeric()
nor_spg <- c()
for (i in names(Gas_e[c(4:7)])) { 
  an6 <- aov(Gas_e[, i] ~ Gas_e$Treat_Contr)
  spg[i] <- shapiro.test(an6$residuals)$p.value
  nor_spg <- c(nor_spg, ifelse (spg[i] <= 0.05, "False", "True"))
}

#Creating summary table with the results
spg_table <- data.frame ("P-value" = spg, "Normality" = nor_spg)

#Creating the caption for the summary table
knitr::kable(spg_table, caption = "Table 2.5 Shapiro–Wilk test results for gas exchange attributes", align="c", digits = 32)
Table 2.5 Shapiro–Wilk test results for gas exchange attributes
P.value Normality
Photsynthesis_Rate 1.391542e-05 False
Intercellular_CO2 8.962970e-01 True
Transpiration_Rate 3.845585e-02 False
Stomatal_Conductance 1.467772e-06 False
#Performing significance test and plotting the results and values distribution
#for intercellular CO2 (with ANOVA results, as this is the only normally distributed value)
Gas_e_withoutNA <- na.omit(Gas_e)
banova <- ggboxplot(Gas_e_withoutNA,
          x="Treat_Contr", 
          y= "Intercellular_CO2",
          color = names(Gas_e_withoutNA[3]),
          palette = c("blue", "red"),
          add = "jitter") 
banova  +   stat_compare_means(method = "anova") +
  theme(legend.position = "None") +
  labs(x = "", title = paste("Boxplot of the", names(Gas_e_withoutNA[5])),
       caption = paste("Figure 2.16 Distribution of the mean values of the", names(Gas_e_withoutNA[5])))

#for photosynthesis rate, transpiration rate, stomatal conductance
#(with Kruskal-Wallis results)
for (i in c(4,6:7)) {
  bgas <- ggboxplot(Gas_e_withoutNA, 
                 x = "Treat_Contr",
                 y = names(Gas_e_withoutNA[i]), 
                 color = names(Gas_e_withoutNA[3]),
                 palette = c("blue", "red"),
                 add = "jitter") + 
    stat_compare_means(data = Gas_e_withoutNA, method = "kruskal.test",
                       label.x.npc = "center",
                       label.y.npc = "top") +
    theme(legend.position = "None") +
    labs(x = "", title = paste("Boxplot of the", names(Gas_e_withoutNA[i])),
         caption = paste("Figure 2.", ifelse((i<5), paste(i+13), paste(i+12)), " Distribution of the mean values of the ", names(Gas_e_withoutNA[i]), sep = ""))
  print(bgas)
}

x <- data.frame(dplyr::filter(table, table$Treat_Contr=="Treatment"))
x <- x[-(1:3)]
y <- data.frame(dplyr::filter(table, table$Treat_Contr=="Control"))
y <- y[-(1:3)]

Mean_Treat <- x %>% 
  summarise(Mean_SL = mean(Shoot_Length),
            Mean_SL = mean(Root_Length), 
            Mean_PH = mean(Plant_Height), 
            Mean_LN = mean(Leaf_Number), 
            Mean_LA = mean(Leaf_Area),
            Mean_FW = mean(Fresh_Weight),
            Mean_DW = mean(Dry_Weight),
            Mean_RWC = mean(Relative_water_content),
            Mean_Na = mean(Na),
            Mean_K = mean(K),
            Mean_Ca = mean(Ca),
            Mean_Mg = mean(Mg),
            Mean_K_Na = mean(K_Na),
            Mean_EL = mean(Electrolyte_Leakage),
            Mean_CC = mean(Chlorophyll_Content),
            Mean_PR = mean (Photsynthesis_Rate, na.rm=T),
            Mean_ICO2 = mean(Intercellular_CO2, na.rm=T),
            Mean_TR = mean(Transpiration_Rate, na.rm=T),
            Mean_S = mean(Stomatal_Conductance, na.rm=T)) 
Mean_Control <- y %>% 
  summarise(Mean_SL = mean(Shoot_Length),
            Mean_SL = mean(Root_Length), 
            Mean_PH = mean(Plant_Height), 
            Mean_LN = mean(Leaf_Number), 
            Mean_LA = mean(Leaf_Area),
            Mean_FW = mean(Fresh_Weight),
            Mean_DW = mean(Dry_Weight),
            Mean_RWC = mean(Relative_water_content),
            Mean_Na = mean(Na),
            Mean_K = mean(K),
            Mean_Ca = mean(Ca),
            Mean_Mg = mean(Mg),
            Mean_K_Na = mean(K_Na),
            Mean_EL = mean(Electrolyte_Leakage),
            Mean_CC = mean(Chlorophyll_Content),
            Mean_PR = mean (Photsynthesis_Rate, na.rm=T),
            Mean_ICO2 = mean(Intercellular_CO2, na.rm=T),
            Mean_TR = mean(Transpiration_Rate, na.rm=T),
            Mean_S = mean(Stomatal_Conductance, na.rm=T)) 
Treatment <- c('Treatment','Control')
Means <- rbind(Mean_Treat, Mean_Control)
Means$Treat_Contr <- Treatment

Sd_Treatment <- x %>%
    summarise(SD_SL = sd(Shoot_Length),
            SD_RL = sd(Root_Length),
            SD_PH = sd(Plant_Height),
            SD_LN = sd(Leaf_Number),
            SD_LA = sd(Leaf_Area),
            SD_FW = sd(Fresh_Weight),
            SD_DW = sd(Dry_Weight),
            SD_RWC = sd(Relative_water_content),
            SD_Na = sd(Na),
            SD_K = sd(K),
            SD_Ca = sd(Ca),
            SD_Mg = sd(Mg),
            SD_K_NA = sd(K_Na),
            SD_EL = sd(Electrolyte_Leakage),
            SD_CC = sd(Chlorophyll_Content),
            SD_PR = sd (Photsynthesis_Rate, na.rm=T),
            SD_I_CO2 = sd(Intercellular_CO2, na.rm=T),
            SD_TR = sd(Transpiration_Rate, na.rm=T),
            SD_SC = sd(Stomatal_Conductance, na.rm=T))
Sd_Control <-   y %>%
  summarise(SD_SL = sd(Shoot_Length),
            SD_RL = sd(Root_Length),
            SD_PH = sd(Plant_Height),
            SD_LN = sd(Leaf_Number),
            SD_LA = sd(Leaf_Area),
            SD_FW = sd(Fresh_Weight),
            SD_DW = sd(Dry_Weight),
            SD_RWC = sd(Relative_water_content),
            SD_Na = sd(Na),
            SD_K = sd(K),
            SD_Ca = sd(Ca),
            SD_Mg = sd(Mg),
            SD_K_NA = sd(K_Na),
            SD_EL = sd(Electrolyte_Leakage),
            SD_CC = sd(Chlorophyll_Content),
            SD_PR = sd (Photsynthesis_Rate, na.rm=T),
            SD_I_CO2 = sd(Intercellular_CO2, na.rm=T),
            SD_TR = sd(Transpiration_Rate, na.rm=T),
            SD_SC = sd(Stomatal_Conductance, na.rm=T))
Treatment <- c('Treatment','Control')
SD <- rbind(Sd_Treatment,Sd_Control)
SD$Treat_Contr <- Treatment

knitr::kable(Means, caption = "Table 2.6 Summary table for the mean of treated and control plants")
Table 2.6 Summary table for the mean of treated and control plants
Mean_SL Mean_PH Mean_LN Mean_LA Mean_FW Mean_DW Mean_RWC Mean_Na Mean_K Mean_Ca Mean_Mg Mean_K_Na Mean_EL Mean_CC Mean_PR Mean_ICO2 Mean_TR Mean_S Treat_Contr
0.98288 2.17992 2.43456 0.03304 96.22133 6.262533 92.76587 30.03500 19.71913 9.120667 4.368333 0.6673333 60.60373 14.06147 1.947391 284.6957 0.9404348 0.0386957 Treatment
2.17392 4.43336 4.22200 0.06664 241.06840 10.582267 92.09667 13.60367 15.48453 6.027733 5.948000 1.1988667 56.51267 18.17267 7.526739 281.1957 2.5736957 0.1458696 Control
knitr::kable(SD, caption = "Table 2.7 Summary table for the standard deviation (SD) of treated and control plants")
Table 2.7 Summary table for the standard deviation (SD) of treated and control plants
SD_SL SD_RL SD_PH SD_LN SD_LA SD_FW SD_DW SD_RWC SD_Na SD_K SD_Ca SD_Mg SD_K_NA SD_EL SD_CC SD_PR SD_I_CO2 SD_TR SD_SC Treat_Contr
0.4802925 0.4291682 0.7607550 0.823898 0.0156644 66.00101 3.997402 2.650396 8.841386 7.478913 5.315845 1.827305 0.1959651 9.321449 6.022014 1.017193 42.57340 0.475834 0.0179150 Treatment
0.5639478 0.4196222 0.7721049 0.780235 0.0254147 164.75151 6.887152 6.997688 5.007557 6.091253 2.606707 2.854427 0.3648619 6.479804 4.789543 4.839646 22.89638 1.131070 0.0801618 Control

3. Pearson correlation

# create a table with all the variables but without 3 first columns
all_data <- na.omit(table[4:23])
#perform Pearson correlation test
res1 <- cor.mtest(all_data, conf.level = .95)
#Plot the results
M1 <-cor(all_data)
corrplot(M1, p.mat = res1$p, sig.level = .05, type = "lower", tl.srt=25)
Figure 3.1. Pearson correlation table for all variables. X represent non-significative correlation (p-value > 0.05)

Figure 3.1. Pearson correlation table for all variables. X represent non-significative correlation (p-value > 0.05)

We can see that morphological traits are positively and strongly correlated (close to 1). Biomass, K/Na ratio, chlorophyll content, photosynthesis rate, transpiration rate and stomatal conductance are also positively correlated to morphological traits. However, Na, K, Ca and electrolyte leakage are negatively correlated to morphological traits. Finally, relative water content, Mg, intercellular CO2 and elevation have no correlation (p>0.05).

4. Salt tolerance index (STI)

x <- data.frame(dplyr::filter(table, table$Treat_Contr=="Treatment"))
x <- x[-(1:3)]
y <- data.frame(dplyr::filter(table, table$Treat_Contr=="Control"))
y <- y[-(1:3)]
#salt tolerance index for morphological traits
STI_SL <- x[1]/y[1]
STI_RL <- x[2]/y[2]
STI_PH <- x[3]/y[3]
STI_LN <- x[4]/y[4]
STI_LA <- x[5]/y[5]
#salt tolerance index for biomass
STI_FW <- x[6]/y[6]
STI_DW <- x[7]/y[7]
#salt tolerance index for RWC, EL and Chlorophyll content
STI_RWC  <- x[8]/y[8]
STI_EL  <- x[14]/y[14]
STI_CC <- x[15]/y[15]
#salt tolerance index for Mineral ion content
STI_Na <- x[9]/y[9]
STI_K <- x[10]/y[10]
STI_Ca <- x[11]/y[11]
STI_Mg <- x[12]/y[12]
STI_K_Na <- x[13]/y[13]
# salt tolerance index for gas exchange attributes
STI_PR <- x[16]/y[16]
STI_ICO2 <- x[17]/y[17]
STI_TR <- x[18]/y[18]
STI_SC <- x[19]/y[19]
#Creating a summary data.frame
STI <- data.frame(STI_SL,
                  STI_RL, 
                  STI_PH, 
                  STI_LN, 
                  STI_LA, 
                  STI_FW, 
                  STI_DW,
                  STI_RWC, 
                  STI_EL,
                  STI_Na,
                  STI_K,
                  STI_Ca,
                  STI_Mg,
                  STI_K_Na,
                  STI_CC,
                  STI_PR,
                  STI_ICO2,
                  STI_TR,
                  STI_SC)
#setting names of columns to compact the table view
STI_names <- c("STI_SL", "STI_RL", "STI_PH", "STI_LN", "STI_LA", "STI_FW", "STI_DW", "STI_RWC", "STI_EL", "STI_Na", "STI_K",
               "STI_Ca", "STI_Mg", "STI_K_Na", "STI_CC", "STI_PR", "STI_ICO2", "STI_TR", "STI_SC")
names(STI) <- STI_names
#Creating a table with the results and a caption for it
knitr::kable(STI, caption = "Table 4.1. Summary table for salt tolerance indices", align="c", digits = round(2))
Table 4.1. Summary table for salt tolerance indices
STI_SL STI_RL STI_PH STI_LN STI_LA STI_FW STI_DW STI_RWC STI_EL STI_Na STI_K STI_Ca STI_Mg STI_K_Na STI_CC STI_PR STI_ICO2 STI_TR STI_SC
1.1 0.89 0.64 0.74 0.62 0.70 0.50 0.86 1.18 0.95 4.67 1.32 0.87 0.93 0.28 0.81 0.37 0.86 0.52 0.36
2.1 0.55 0.66 0.51 0.64 0.50 0.34 0.75 1.28 1.01 3.95 1.47 0.87 0.81 0.37 0.72 0.65 1.06 1.24 1.00
3.1 0.20 0.19 0.26 0.30 0.08 0.10 0.25 1.16 1.22 2.28 1.51 1.01 0.94 0.65 0.71 0.08 0.89 0.13 0.07
4.1 0.58 0.72 0.63 0.83 0.44 0.48 0.63 1.00 1.08 3.13 1.40 1.09 0.76 0.45 0.94 0.26 0.98 0.39 0.29
5.1 0.43 0.59 0.46 0.45 0.85 0.76 0.84 1.04 1.32 2.76 1.08 0.76 0.68 0.39 0.71 0.29 1.12 0.56 0.26
6.1 0.61 0.71 0.61 0.83 0.38 0.31 0.32 0.97 0.98 2.35 1.21 0.96 0.75 0.52 0.74 0.25 1.12 0.27 0.16
7.1 0.76 0.52 0.66 0.60 0.74 0.30 0.80 0.98 1.07 2.34 1.02 0.76 0.73 0.43 1.19 NA NA NA NA
8.1 0.31 0.58 0.42 0.48 0.63 0.31 0.50 0.97 1.20 2.05 1.25 0.82 0.93 0.61 0.71 0.54 1.11 0.83 0.78
9.1 0.71 0.62 0.67 0.75 0.60 0.84 0.78 0.99 1.11 1.96 1.24 1.50 0.66 0.63 1.14 0.18 0.98 0.20 0.14
10.1 0.77 0.47 0.62 0.44 0.85 0.41 0.45 0.98 1.01 3.67 1.34 1.81 0.84 0.36 0.70 0.29 0.92 0.35 0.36
11.1 0.61 0.60 0.58 0.82 0.82 0.70 0.88 1.01 1.00 1.17 1.13 1.12 0.96 0.96 0.65 0.35 1.13 0.38 0.37
12.1 0.77 0.74 0.69 0.68 0.40 0.78 0.86 1.00 1.02 1.22 0.82 1.78 0.91 0.67 0.92 0.37 1.10 0.59 0.43
13.1 0.72 0.57 0.64 0.80 0.59 0.39 0.84 0.98 1.01 2.64 1.03 1.47 0.71 0.39 0.61 0.17 0.76 0.19 0.12
14.1 0.54 0.62 0.59 0.57 0.36 0.39 0.62 0.97 1.11 2.77 1.45 2.29 0.89 0.52 0.70 0.36 0.93 0.48 0.26
15.1 0.17 0.40 0.37 0.34 0.19 0.15 0.31 0.96 1.05 1.36 1.34 1.36 0.69 0.98 0.58 0.27 0.68 0.13 0.10
16.1 0.29 0.20 0.26 0.29 0.17 0.43 0.82 0.98 1.06 2.14 1.42 2.21 0.73 0.65 0.60 NA NA NA NA
17.1 0.24 0.20 0.26 0.28 0.29 0.17 0.29 0.96 1.06 2.63 1.56 3.17 0.73 0.60 0.61 0.67 0.93 0.35 0.53
18.1 0.20 0.16 0.20 0.38 0.16 0.13 0.32 0.92 1.10 1.54 1.12 2.79 0.76 0.73 1.30 0.50 1.14 0.72 0.37
19.1 0.55 0.68 0.63 0.94 0.71 0.67 0.76 1.02 1.03 2.62 1.21 2.62 0.63 0.46 0.88 0.75 1.02 0.16 0.19
20.1 0.17 0.41 0.65 0.53 0.32 0.71 0.84 1.03 1.05 3.53 1.26 1.60 0.70 0.37 0.66 0.14 0.91 0.15 0.12
21.1 0.29 0.17 0.38 0.62 0.45 0.68 0.78 1.00 1.05 1.80 1.22 1.45 0.55 0.68 1.70 0.21 0.97 0.30 0.23
22.1 0.61 0.32 0.49 0.59 0.86 0.74 0.65 0.99 1.19 1.69 1.23 1.42 0.84 0.73 0.42 0.29 1.06 0.62 0.52
23.1 0.36 0.30 0.33 0.67 0.64 0.27 0.81 0.96 1.04 1.54 1.52 1.15 0.73 0.98 0.41 0.15 1.07 0.42 0.40
24.1 0.54 0.35 0.44 0.53 0.80 0.62 0.41 0.99 1.10 2.05 1.37 1.16 0.39 0.67 0.66 0.20 1.31 0.40 0.43
25.1 0.49 0.23 0.35 0.67 1.00 0.42 0.82 0.96 0.96 2.72 1.88 2.02 0.88 0.69 0.65 0.31 1.32 0.39 0.48

5. Membership function value (MFV)

#Membership function value 
library(dplyr)
# 1-results for the traits inversely related to salt tolerance: which are electrolyte leakage, Na, K and Ca
MFV <- STI %>%
  mutate(SL = (STI$STI_SL - min(STI$STI_SL))/(max(STI$STI_SL)- min(STI$STI_SL)),
         RL = (STI$STI_RL - min(STI$STI_RL))/(max(STI$STI_RL)- min(STI$STI_RL)),
         PH = (STI$STI_PH - min(STI$STI_PH))/(max(STI$STI_PH)- min(STI$STI_PH)),
         LN = (STI$STI_LN - min(STI$STI_LN))/(max(STI$STI_LN)- min(STI$STI_LN)),
         LA = (STI$STI_LA - min(STI$STI_LA))/(max(STI$STI_LA)- min(STI$STI_LA)),
         FW = (STI$STI_FW - min(STI$STI_FW))/(max(STI$STI_FW)- min(STI$STI_FW)),
         DW = (STI$STI_DW - min(STI$STI_DW))/(max(STI$STI_DW)- min(STI$STI_DW)),
         RWC = (STI$STI_RWC - min(STI$STI_RWC))/(max(STI$STI_RWC)- min(STI$STI_RWC)),
         EL = 1-(STI$STI_EL - min(STI$STI_EL))/(max(STI$STI_EL)- min(STI$STI_EL)),
         CC = (STI$STI_CC - min(STI$STI_CC))/(max(STI$STI_CC)- min(STI$STI_CC)),
         Na = 1-(STI$STI_Na - min(STI$STI_Na))/(max(STI$STI_Na)- min(STI$STI_Na)),
         K = 1-(STI$STI_K - min(STI$STI_K))/(max(STI$STI_K)- min(STI$STI_K)),
         Ca = 1- (STI$STI_Ca - min(STI$STI_Ca))/(max(STI$STI_Ca)- min(STI$STI_Ca)),
         Mg = (STI$STI_Mg - min(STI$STI_Mg))/(max(STI$STI_Mg)- min(STI$STI_Mg)),
         K_Na = (STI$STI_K_Na - min(STI$STI_K_Na))/(max(STI$STI_K_Na)- min(STI$STI_K_Na)),
         PR = (STI$STI_PR - min(STI$STI_PR, na.rm=T))/(max(STI$STI_PR, na.rm=T)- min(STI$STI_PR, na.rm=T)),
         ICO2 = (STI$STI_ICO2 - min(STI$STI_ICO2, na.rm=T))/(max(STI$STI_ICO2, na.rm=T)- min(STI$STI_ICO2, na.rm=T)),
         TR = (STI$STI_TR - min(STI$STI_TR, na.rm=T))/(max(STI$STI_TR, na.rm=T)- min(STI$STI_TR, na.rm=T)),
         SC = (STI$STI_SC - min(STI$STI_SC, na.rm=T))/(max(STI$STI_SC, na.rm=T)- min(STI$STI_SC, na.rm=T)))%>%
  select(SL, RL, PH, LN, LA, FW, DW, RWC, EL, CC, Na, K, Ca, Mg, K_Na, PR, ICO2, TR, SC)
#Creating a table with the results and a caption for it
knitr::kable(MFV, caption = "Table 5.1. Summary table of membership function values (MFV) calculated from STI", align="c", digits = round(2))
Table 5.1. Summary table of membership function values (MFV) calculated from STI
SL RL PH LN LA FW DW RWC EL CC Na K Ca Mg K_Na PR ICO2 TR SC
1.00 0.83 1.00 0.51 0.67 0.54 0.97 0.73 1.00 0.31 0.00 0.53 0.95 0.94 0.00 0.44 0.28 0.35 0.31
0.52 0.87 0.57 0.54 0.46 0.32 0.80 1.00 0.84 0.24 0.21 0.38 0.95 0.73 0.13 0.85 0.60 1.00 1.00
0.04 0.06 0.11 0.03 0.00 0.00 0.00 0.67 0.28 0.23 0.68 0.35 0.90 0.95 0.53 0.00 0.32 0.00 0.00
0.57 0.97 0.80 0.83 0.39 0.51 0.60 0.24 0.66 0.41 0.44 0.45 0.86 0.64 0.24 0.27 0.47 0.23 0.24
0.37 0.75 0.49 0.26 0.84 0.90 0.93 0.32 0.00 0.23 0.55 0.76 1.00 0.49 0.16 0.31 0.68 0.39 0.20
0.62 0.95 0.77 0.83 0.32 0.29 0.11 0.15 0.91 0.25 0.66 0.63 0.92 0.63 0.34 0.25 0.69 0.12 0.10
0.82 0.63 0.85 0.48 0.72 0.27 0.88 0.18 0.68 0.61 0.67 0.81 1.00 0.60 0.21 NA NA NA NA
0.20 0.74 0.42 0.30 0.60 0.28 0.40 0.15 0.34 0.23 0.75 0.60 0.97 0.94 0.47 0.68 0.67 0.63 0.76
0.74 0.81 0.86 0.71 0.57 1.00 0.84 0.19 0.56 0.57 0.77 0.61 0.69 0.46 0.49 0.14 0.47 0.06 0.08
0.84 0.53 0.78 0.24 0.84 0.42 0.32 0.18 0.84 0.23 0.29 0.52 0.56 0.79 0.11 0.31 0.37 0.20 0.31
0.62 0.76 0.71 0.81 0.81 0.82 1.00 0.26 0.86 0.19 1.00 0.71 0.85 1.00 0.96 0.41 0.71 0.23 0.32
0.83 1.00 0.90 0.61 0.35 0.92 0.96 0.24 0.81 0.39 0.99 1.00 0.58 0.90 0.56 0.43 0.66 0.41 0.38
0.76 0.72 0.81 0.79 0.56 0.40 0.93 0.18 0.82 0.15 0.58 0.80 0.71 0.55 0.16 0.13 0.12 0.05 0.06
0.51 0.79 0.71 0.44 0.30 0.39 0.58 0.14 0.57 0.23 0.54 0.41 0.37 0.87 0.34 0.42 0.39 0.32 0.20
0.00 0.42 0.32 0.09 0.12 0.06 0.09 0.12 0.74 0.13 0.95 0.51 0.75 0.52 0.99 0.28 0.00 0.00 0.03
0.17 0.06 0.12 0.01 0.10 0.44 0.90 0.17 0.71 0.14 0.72 0.43 0.40 0.59 0.52 NA NA NA NA
0.11 0.07 0.12 0.00 0.23 0.10 0.07 0.13 0.70 0.15 0.58 0.30 0.00 0.60 0.46 0.88 0.38 0.19 0.49
0.04 0.00 0.00 0.16 0.09 0.04 0.12 0.00 0.61 0.69 0.89 0.72 0.16 0.64 0.64 0.63 0.72 0.53 0.32
0.53 0.91 0.80 1.00 0.69 0.77 0.81 0.28 0.79 0.37 0.59 0.63 0.23 0.42 0.26 1.00 0.53 0.02 0.12
0.01 0.44 0.83 0.38 0.26 0.83 0.93 0.32 0.74 0.19 0.33 0.59 0.65 0.53 0.12 0.09 0.35 0.02 0.06
0.17 0.02 0.33 0.52 0.40 0.78 0.83 0.24 0.73 1.00 0.82 0.62 0.71 0.28 0.56 0.20 0.45 0.15 0.17
0.61 0.27 0.54 0.47 0.85 0.87 0.64 0.21 0.36 0.01 0.85 0.61 0.72 0.79 0.64 0.32 0.60 0.44 0.48
0.27 0.24 0.24 0.58 0.61 0.23 0.89 0.12 0.75 0.00 0.89 0.35 0.84 0.58 1.00 0.11 0.61 0.26 0.35
0.51 0.33 0.45 0.38 0.78 0.70 0.26 0.19 0.59 0.20 0.75 0.48 0.83 0.00 0.56 0.18 0.98 0.24 0.39
0.44 0.13 0.29 0.58 1.00 0.43 0.89 0.13 0.97 0.19 0.56 0.00 0.47 0.85 0.58 0.35 1.00 0.23 0.44

6. Principal component analysis (PCA)

As it was mentioned in the methods, we included 13 variables into the PCA: SL, RL, PH, LN, LA, FW, DW, EL, CC, K/Na, PR, TR, SC. PCA produced principal components with the variation contributed by the first 2 components equal to 53,3% (PC1 - 34,4% and PC2 - 18,9%).

####------PCA on MFV-------###
#doing the PCA, adding the scaling into the function
MFV_salt <- na.omit(MFV[-c(8, 11:14, 17, 20)])
MFV_salt.pca <- prcomp(MFV_salt, 
                       scale. = TRUE)

#plotting the results in order to evaluate the principal components
PCA_eval <- fviz_eig(MFV_salt.pca,
                     title = "Variance contribution of principal components",
                     xlab = "Principal components")
print(PCA_eval)
Figure 6.1 Percent of variance of principal components

Figure 6.1 Percent of variance of principal components

The scatter plot (Figure 6.2) shows the projection of data on PC1 and PC2 dimensions, allowing us to recognize groups of accessions (according to their salt tolerance) defined by MFV ranking and cluster analysis. Different groups are represented by different colors as shown in the legend.

#creating vector for colors to correspond to ranking of accessions
colors_PCA <- c("3. Tolerant", "2. Moderately tolerant", "1. Sensitive",
                "3. Tolerant", "2. Moderately tolerant", "2. Moderately tolerant",
                "2. Moderately tolerant", "3. Tolerant", "2. Moderately tolerant",
                "3. Tolerant", "3. Tolerant", "3. Tolerant", "2. Moderately tolerant",
                "1. Sensitive", "1. Sensitive", "1. Sensitive", "3. Tolerant",
                "2. Moderately tolerant", "2. Moderately tolerant",
                "2. Moderately tolerant", "2. Moderately tolerant",
                "2. Moderately tolerant", "2. Moderately tolerant")

#making a scatterplot of PC1 and PC2
PCA_ind <- fviz_pca_ind(MFV_salt.pca,
                        repel = TRUE, # Avoid text overlapping
                        labelsize = 5,
                        pointsize = 2,
                        habillage = colors_PCA,
                        addEllipses = TRUE,
                        ellipse.level = 0.95,
                        mean.point = FALSE,
                        palette = c("#FF3333", "#009966", "#3366CC"),
                        title = "PCA score plot")
print(PCA_ind)
Figure 6.2 Plot of data projections onto the principal components. Groups according to salt tolerance

Figure 6.2 Plot of data projections onto the principal components. Groups according to salt tolerance

The loading plot illustrates how much different traits contribute into data distribution (grouping). In particular, it shows that all morphological traits, as well as biomass characteristics, electrolyte leakage (in one direction) and K/Na ratio (in opposite direction) are responsible for distributing data projections along PC1. While gas characteristics (one direction) and chlorophyll content (opposite direction) contribute to data distribution along PC2.

#making loadings plot
PCA_var <- fviz_pca_var(MFV_salt.pca,
                        col.var = "#2E9FDF",
                        repel = TRUE,
                        title = "PCA loadings")
print(PCA_var)
Figure 6.3 Correlation circle and loading scores of variables to principal components

Figure 6.3 Correlation circle and loading scores of variables to principal components

The last figure (Figure 6.4) presents variables according to the percentage, that they contribute to principal component 1. Red dashed line, as was previously mentioned in the Methods, was cessation level and allowed us to narrow the quantity of variables to the most important 6: PH, SL, LN, RL, DW, FW. Those variables were later used for MFV ranking and cluster analysis.

#Contributions of variables to PC1
PCA_contr <- fviz_contrib(MFV_salt.pca,
                          choice = "var",
                          axes = 1,
                          top = 13,
                          sortcontrib = "asc",
                          title = "Contribution of variables to PC1")
print(PCA_contr)
Figure 6.4 Percentage of variables influence on the first principal component

Figure 6.4 Percentage of variables influence on the first principal component

7. Salt-tolerance evaluation: ranking and dendrogram

The ranking of accessions according to their salt tolerance is summarized in Table 7.1. However, the categories of salt tolerance were defined based on cluster analysis and can be seen in the dendrogram (Figure 7.1). Colors represents groups according to salt tolerance: tolerant - blue, moderately tolerate - green and sensitive - red. Therefore, 8 accessions were included into the tolerant group (accessions ## 12, 9, 1, 19, 11, 13, 4, 7), 4 accessions were included into the sensitive group (accessions ## 3, 18, 17, 15) and the rest were included into the moderately tolerant group (13 accessions: 5, 2, 6, 14, 20, 22, 10, 25, 21, 24, 23, 8, 16).

# We used 6 highest ranked variables to include in the final MFV based ranking of salt tolerance
# Add into the data the mean MFV column from the 6 important variables 
MFV <- MFV %>%
  mutate(Mean = rowMeans(MFV[c(1:4, 6:7)], na.rm=T))%>%
  select(SL, RL, PH, LN, LA, FW, DW, RWC, EL, CC, Na, K, Ca, Mg, K_Na, PR, ICO2, TR, SC, Mean)

# create the ranking table out of MFV mean from 6 important variables
MFV_Ranked <- MFV[order(-MFV$Mean),]
MFV_Ranked <- MFV_Ranked[20]
MFV_Ranked$Category <- c(rep("Tolerant", 8), rep("Moderately tolerant", 13), rep("Sensitive", 4))

knitr::kable(MFV_Ranked, caption = "Table 7.1. Salt tolerance ranking based on MFV mean from 6 variables identified by PCA", align="c", digits = round(2))
Table 7.1. Salt tolerance ranking based on MFV mean from 6 variables identified by PCA
Mean Category
12 0.87 Tolerant
9 0.83 Tolerant
1 0.81 Tolerant
19 0.80 Tolerant
11 0.79 Tolerant
13 0.74 Tolerant
4 0.71 Tolerant
7 0.66 Tolerant
5 0.62 Moderately tolerant
2 0.60 Moderately tolerant
6 0.59 Moderately tolerant
14 0.57 Moderately tolerant
20 0.57 Moderately tolerant
22 0.57 Moderately tolerant
10 0.52 Moderately tolerant
25 0.46 Moderately tolerant
21 0.44 Moderately tolerant
24 0.44 Moderately tolerant
23 0.41 Moderately tolerant
8 0.39 Moderately tolerant
16 0.28 Moderately tolerant
15 0.16 Sensitive
17 0.08 Sensitive
18 0.06 Sensitive
3 0.04 Sensitive
#data frame with MFV from 6 important variables of PCA
important_var <- MFV[c(1:4, 6:7)]

#make the dendrogram
dend <- important_var %>% 
  scale %>% 
  dist(method = "euclidean") %>% 
  hclust(method = "ward.D2") %>% 
  as.dendrogram %>%
  set("branches_k_color",                                   #setting the color 
      value = c("#FF3333", "#3366CC", "#009966"),           #of the branches 
      k = 3)%>% # make the 3 groups and color for groups    #according to the clusters
  plot(main = "MFV Dendrogram") # plot dendrogram
Figure 7.1. The MFV dendrogram based on 6 main variables identified by PCA

Figure 7.1. The MFV dendrogram based on 6 main variables identified by PCA

8. Map of accessions and elevation correlation analysis

8.1 Location and salt tolerance.

The map of accessions showed no visible patterns of accessions distribution according to their salt tolerance ranking. The only accession, whose tolerance might be linked to its location is Ess-1, that is closest to the coast.

###--Map of accessions--###
#Creating data frame for the future map from Acc_loc table
map.acc <- data.frame(code = Acc_loc$Code,
                      lat = Acc_loc$Latitude,
                      long = Acc_loc$Longitude)
#separating longitude and latitude data into separate columns according to degrees minutes, seconds and cardinals
map.acc <- separate(map.acc, lat, c("lt.d", "lt.m", "lt.s", "lt.cr"))
map.acc <- separate(map.acc, long, c("ln.d", "ln.m", "ln.s", "ln.cr"))
#creating data frame with decimal coordinates
map.acc <- data.frame(code = map.acc$code,
                      Latitude = (dms2dd(as.numeric(map.acc$lt.d),
                                    as.numeric(map.acc$lt.m),
                                    as.numeric(map.acc$lt.s),
                                    map.acc$lt.cr)),
                      Longitude = (dms2dd(as.numeric(map.acc$ln.d),
                                     as.numeric(map.acc$ln.m),
                                     as.numeric(map.acc$ln.s),
                                     map.acc$ln.cr)))
#Taking out "Es-" part from future labels
map.acc$code <- sub('Es-', '', map.acc$code)
#creating data.frame for colors to correspond to ranking of accessions
colors <- data.frame(accession = as.numeric(row.names(MFV_Ranked)),
                     mean_MFV = MFV_Ranked$Mean,
                     category = as.factor(MFV_Ranked$Category))
#Renaming the categories, so that legend is shown in order of salt tolerance increase, not in alphabetical order
colors$category <- sub('Sensitive', '1. Sensitive', colors$category)
colors$category <- sub('Moderately tolerant', '2. Moderately tolerant', colors$category)
colors$category <- sub('Tolerant', '3. Tolerant', colors$category)


colors <- colors[order(colors[,1]),] #ordering the categories according to accessions numbers

#Creating a map
ggplot(map.acc, aes(x = Longitude, 
                    y = Latitude, 
                    color = as.character(colors$category))) +
  scale_color_manual(values=c("#FF3333", "#009966", "#3366CC"))+
  labs(colour = "Salt tolerance ranks") +
  geom_point() +
  geom_text(aes(label = code), nudge_x = -0.4, size = 3, check_overlap = T) +
  borders(database = "world", regions = "Pakistan") +
  ggtitle("Accessions locations in Pakistan") +
  theme_minimal()
Figure 8.1. Map of *E. sativa* accessions

Figure 8.1. Map of E. sativa accessions

8.2 Correlation analysis of elevation and mean MFV

Correlation coefficient (-0,07) showed no link between elevation and salt tolerance (p = 0,75).

###--Correlation between ranking and elevation--###
  
#Checking the correlation between mean MFV (of 6 important traits) and elevation
Elev_Cor <- as.data.frame(MFV$Mean)
Elev_Cor$Elevation <- Acc_loc$Elevation
#printing the correlation results  
cor_1 <- rcorr(as.matrix(Elev_Cor))
ell_MFV_cor <- data.frame("Correlation coefficient" = round(cor_1$r[2,1], 2),
                          "P value" = round(cor_1$P[2,1], 2))

knitr::kable(ell_MFV_cor, caption = "Table 8.1 Elevation and MFV mean correlation analysis results", align="c", digits = round(2))
Table 8.1 Elevation and MFV mean correlation analysis results
Correlation.coefficient P.value
-0.07 0.75

Discussion

1. Effects of salt stress on morpho-physiological traits of E. sativa accessions.

For the most of morpho-physiological traits salt stress caused significant decrease of parameters, except for electrolyte leakage and some mineral ion content traits (Na, K, Ca), that were significantly increased. Also, salt stress didn’t seem to affect relative water content and intercellular CO2. So our first hypothesis was correct for all parameters except two.

2. Morpho-physiological traits that were the most affected by salt stress.

PCA analysis allowed us to identify 6 morpho-physiological traits that are the most relevant for the study of salt tolerance: plant height, shoot length, leaf number, root length, dry weight and fresh weight. This choice was based on the Figure 6.4, because they were above the line of mean contribution percentage of all the variables in the first principal component.

3. Accessions salt tolerance ranking and grouping

From deprogram (Figure 7.1) and ranking table (Table 7.1) we established 3 groups according to salt tolerance: - Tolerant accessions (12, 9, 1, 19, 11, 13, 4, 7); - Moderately tolerant accessions (5, 2, 6, 14, 20, 22, 10, 25, 21, 24, 23, 8, 16); - Sensitive accessions (3, 18, 17, 15). Later we introduced the groups to the PCA scatterplot (Figure 6.2) and we saw that data projections (accessions) were clustered accordingly. Thus, supporting our second hypothesis.

4. Results comparison with the study

Despite differences in calculation and clustering of the data, our final results on the evaluation of salt tolerance is similar to the study. The four most sensitive accessions are the same as in the initial study with the only exception of ES-16 that we classified as moderately tolerant (because of dendogram clustering). Though we have eight tolerant accessions, the five most tolerant from the paper are included and the highest in our ranking.

5. Influence of location on salt tolerance

According to Figure 8.1 and Table 8.2 no link between location and salt tolerance was established. So our third hypothesis was rejected.

Conclusions

According to our analysis, we conclude that the best traits to assess salt tolerance are morphological and biomass parameters. In the context of salt tolerance inquiry, some traits are not relevant (intercellular CO2 and relative water content).

By comparing accessions, we can see that there is a phenotypical variation within Eruca sativa towards salt stress.

We did not see a pattern in the distribution of salt tolerance within accessions. It could be interesting to sample accessions more evenly in Paksistan and include climate specification of the area (soil salinity, precipitation, temperature…).

During the experiment, it is better to perform equal quantity of replicates. Furthermore, to be consistent in the analysis we need to have clear labels on the replicates. This is what we lacked to redo the same analysis.

Post scriptum

During this project, we understood that clear methodology description and tidy data collection are important for an unambiguous and repeatable data analysis.